import { VipIconService } from '../../lib/icons/vip/vip_service'
import { ToolKit } from '../../lib/utils/toolkit'

export interface TimeBadgeProps {
  level: number
  name: string
  icon: string
  color: string
  bgColor: string
  threshold: number // 秒数门槛
  description?: string
  specialEffects?: string[]
}

export const BADGE_LEVELS: TimeBadgeProps[] = [
  {
    level: 1,
    name: '萌新助手',
    icon: VipIconService.createVipImage(1, { theme: 'blue' }),
    color: '#ffffff',
    bgColor: '#9b59b6',
    threshold: 60, // 1*分钟
    description: '初次相识，请多指教',
  },
  {
    level: 2,
    name: '常驻伙伴',
    icon: VipIconService.createVipImage(2, { theme: 'aurora' }),
    color: '#ffffff',
    bgColor: '#9b59b6',
    threshold: 3600, // 60*分钟（1*小时）
    description: '1小时陪伴，感谢信任',
  },
  {
    level: 3,
    name: '时间领主',
    icon: VipIconService.createVipImage(3, { theme: 'green' }),
    color: '#ffffff',
    bgColor: '#9b59b6',
    threshold: 86400, // 24*小时（1*天）
    description: '全天候守护，值得信赖',
  },
  {
    level: 4,
    name: '永恒守护',
    icon: VipIconService.createVipImage(4, { theme: 'orange' }),
    color: '#ffffff',
    bgColor: '#9b59b6',
    threshold: 2592000, // 30*天（1*个月）
    description: '30天不离不弃，您是最尊贵的用户',
  },
  {
    level: 5,
    name: '岁月见证',
    icon: VipIconService.createVipImage(5, { theme: 'pink' }),
    color: '#ffffff',
    bgColor: '#9b59b6',
    threshold: 15552000, // 180*天（6*个月）
    description: '半年的坚持，您已是不可或缺的存在',
  },
  {
    level: 6,
    name: '时光守护',
    icon: VipIconService.createVipImage(6, { theme: 'black' }),
    color: '#2c3e50',
    bgColor: 'linear-gradient(135deg, #f9d423 0%, #e6b800 100%)', // 金色渐变
    threshold: 31536000, // 365*天（1*年）
    description: '1年的陪伴，您定义了什么是忠诚',
  },
  {
    level: 7,
    name: '时空旅者',
    icon: VipIconService.createVipImage(7, { theme: 'purple' }),
    color: '#2c3e50',
    bgColor: 'linear-gradient(135deg, #f9d423 0%, #b8860b 100%)', // 更浓的金色
    threshold: 94608000, // 1095*天（3*年）
    description: '穿越3年的时光长河，您依然在这里',
  },
  {
    level: 8,
    name: '纪元守护',
    icon: VipIconService.createVipImage(8, { theme: 'red' }),
    color: '#2c3e50',
    bgColor: 'linear-gradient(135deg, #ffd700 0%, #daa520 100%)', // 经典金色
    threshold: 157680000, // 1825*天（5*年）
    description: '5载春秋，您见证了产品的每一次蜕变',
  },
  {
    level: 9,
    name: '不朽传奇',
    icon: VipIconService.createVipImage(9, { theme: 'gold' }),
    color: '#2c3e50',
    bgColor: 'linear-gradient(135deg, #fffacd 0%, #ffd700 50%, #daa520 100%)', // 三色渐变
    threshold: 315360000, // 3650*天（10*年）
    description: '10年如一日，您已成为这个产品的活历史',
  },
]

/**
 * 计算时间差（秒）
 * @param start 开始时间（Date或时间戳）
 * @param end 结束时间（可选，默认当前时间）
 */
function getDiffInSeconds(start: Date | number, end: Date | number = new Date()): number {
  const startTime = start instanceof Date ? start.getTime() : start * 1000
  const endTime = end instanceof Date ? end.getTime() : end * 1000
  return Math.floor((endTime - startTime) / 1000)
}

/**
 * 获取时间徽章（支持Date和秒数）
 */
export function getTimeBadge(input: Date | number): TimeBadgeProps {
  const seconds = input instanceof Date
    ? getDiffInSeconds(input)
    : input

  const matchedBadge = [...BADGE_LEVELS]
    .reverse()
    .find(badge => seconds >= badge.threshold)

  return matchedBadge || {
    ...BADGE_LEVELS[0],
    name: '初来乍到',
    description: '我们才刚刚开始',
  }
}

/**
 * 获取实时徽章数据
 */
export function getLiveTimeBadge(startDate: Date): {
  badge: TimeBadgeProps
  formattedTime: string
} {
  const badge = getTimeBadge(startDate)
  return {
    badge,
    formattedTime: ToolKit.time.runTime(startDate),
  }
}
